<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// 请按以下要求实现方法 fn ：遇到退格字符就删除前面的字符，遇到两个退格就删除两个字符
	// 比较含有退格的字符串，"<-"代表退格键，"<"和"-"均为正常字符
	// 输入："a<-b<-", "c<-d<-"，结果：true，解释：都为""
	// 输入："<-<-ab<-", "<-<-<-<-a"，结果：true，解释：都为"a"
	// 输入："<-<ab<-c", "<<-<a<-<-c"，结果：false，解释："<ac" !== "c"
	/**
	 * 比较两个字符串在应用退格操作后是否相等
	 *
	 * 该函数解析输入字符串中的退格操作符"<-"，将其视为删除前一个字符的操作，
	 * 然后比较两个解析后的字符串是否相同
	 *
	 * @param {string} str1 - 第一个输入字符串，可包含退格操作符"<-"
	 * @param {string} str2 - 第二个输入字符串，可包含退格操作符"<-"
	 * @returns {boolean} - 解析后的两个字符串是否相等
	 */
	function fn(str1, str2) {
		/**
		 * 解析包含退格操作的字符串
		 *
		 * 遍历输入字符串，当遇到"<-"时删除前一个有效字符，
		 * 其他字符按顺序保留，最终返回处理后的字符串
		 *
		 * @param {string} str - 待解析的原始字符串
		 * @returns {string} - 应用退格操作后的结果字符串
		 */
		function parse(str) {
			// 存储解析过程中的字符序列
			let temp = []
			let i = 0
			
			// 遍历字符串的每个字符
			while (i < str.length) {
				// 检测到退格操作符"<-"
				if (str[i] === '<' && str[i + 1] === '-') {
					// 存在有效字符时才执行删除操作
					if (temp.length > 0) {
						temp.pop()
					}
					// 跳过两个字符（"<-"）
					i = i + 2
				} else {
					// 普通字符直接入栈
					temp.push(str[i])
					i++
				}
			}
			return temp.join('')
		}
		
		// 解析两个输入字符串
		const parseStr1 = parse(str1)
		const parseStr2 = parse(str2)
		
		// 比较解析结果是否相同
		return parseStr1 === parseStr2
	}
	
	console.log(fn("a<-b<-", "c<-d<-"))
	console.log(fn("<-<-ab<-", "<-<-<-<-a"))
	console.log(fn("<-<ab<-c", "<<-<a<-<-c"))
</script>
</html>